/**
 * 算式类 - 版本1.0
 * 表示一个数学算式，包含两个操作数和一个运算符
 */
public class Calculation {
    // 成员变量
    private int operand1;     // 第一个操作数
    private int operand2;     // 第二个操作数
    private char operator;    // 运算符 (+ 或 -)
    private int result;       // 计算结果
    
    /**
     * 构造方法 - 创建一个新的算式实例
     * @param operand1 第一个操作数
     * @param operand2 第二个操作数
     * @param operator 运算符
     */
    public Calculation(int operand1, int operand2, char operator) {
        this.operand1 = operand1;
        this.operand2 = operand2;
        this.operator = operator;
        calculateResult(); // 计算结果
    }
    
    /**
     * 计算算式结果
     */
    private void calculateResult() {
        if (operator == '+') {
            result = operand1 + operand2;
        } else if (operator == '-') {
            result = operand1 - operand2;
        } else {
            throw new IllegalArgumentException("不支持的运算符: " + operator);
        }
    }
    
    /**
     * 获取算式的字符串表示
     * @return 算式的字符串形式，如 "5 + 3 = "
     */
    @Override
    public String toString() {
        return operand1 + " " + operator + " " + operand2 + " = ";
    }
    
    /**
     * 获取完整算式的字符串表示（包含结果）
     * @return 包含结果的算式字符串，如 "5 + 3 = 8"
     */
    public String getFullExpression() {
        return toString() + result;
    }
    
    /**
     * 验证用户提供的答案是否正确
     * @param userAnswer 用户提供的答案
     * @return 如果答案正确返回true，否则返回false
     */
    public boolean checkAnswer(int userAnswer) {
        return userAnswer == result;
    }
    
    /**
     * 获取第一个操作数
     * @return 第一个操作数
     */
    public int getOperand1() {
        return operand1;
    }
    
    /**
     * 获取第二个操作数
     * @return 第二个操作数
     */
    public int getOperand2() {
        return operand2;
    }
    
    /**
     * 获取运算符
     * @return 运算符
     */
    public char getOperator() {
        return operator;
    }
    
    /**
     * 获取计算结果
     * @return 算式的计算结果
     */
    public int getResult() {
        return result;
    }
}